What is CUDA? General purpose computing on graphical processing units.
What is OpenGL OpenGL (Open Graphics Library[3]) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.
Concurrent programming with GPUs
Multiprocessing/Parallel/Concurrent programming are synonymous
What are cores?
What are threads? https://www.guru99.com/cpu-core-multicore-thread.html
Difference between Core vs. Threads
Parameters | Core | Threads |
---|---|---|
Definition | CPU cores mean the actual hardware component. | Threads refer to the virtual component which manages the tasks. |
Process | The CPU is fed tasks from a thread. Therefore, it only accesses the second thread when the information sent by the first thread is not reliable. | There are many different variations of how CPU can interacts with multiple threads. |
Implementation | Achieved through interleaving operation | Performed through suing multiple CPU’S |
Benefit | Increase the amount of work accomplished at a time. | Improve throughput, computational speed-up. |
Make use of | Core uses content switching | Uses multiple CPUs for operating numerous processes. |
Processing units required | Requires only signal process unit. | Requires multiple processing units. |
Example | Running multiple application at the same time. | Running web crawler on a cluster. |
Common Pitfall in Concurrent Programming - Race Conditions - Resource contention - dead Lock - live lock - non-optimal resource utilization
Concurrent Programming Problems and Algorithms